package com.hahaliu.hahaliu.service.video;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hahaliu.hahaliu.pojo.entity.Favorite;

import java.util.List;

/**
* @author Liubuzhu
* @description 针对表【favorite】的数据库操作Service
* @createDate 2024-06-13 08:30:21
*/
public interface FavoriteService extends IService<Favorite> {

	/**
	 * 根据用户id获取收藏夹列表
	 * @param uid 用户ID
	 * @param isOwner 是否访问本人收藏夹
	 * @return 收藏夹列表
	 */
	List<Favorite> getFavoriteList(Integer uid, boolean isOwner);

	/**
	 * 添加收藏夹
	 * @param uid 用户ID
	 * @param title 标题
	 * @param desc 简介
	 * @param visible 是否公开收藏夹 0不公开 1公开
	 * @return 新创建的收藏夹信息
	 */
	Favorite addFavorite(Integer uid, String title, String desc, Integer visible);

	/**
	 * 更新收藏夹信息
	 * @param fid   收藏夹ID
	 * @param uid   用户ID（判断是否创建者）
	 * @param title 标题  限80字
	 * @param desc  简介  限200字
	 * @param visible   是否公开收藏夹 0不公开 1公开
	 * @return  返回更新后的收藏夹信息
	 */
	Favorite updateFavorite(Integer fid, Integer uid, String title, String desc, Integer visible);


	/**
	 * 删除收藏夹，将会把其中的全部视频从收藏夹中移除，并且如果该视频不存在用户的其他收藏夹中，将会变成未收藏状态
	 * @param fid   收藏夹ID
	 * @param uid   用户ID（判断是否创建者）
	 */
	void deleteFavorite(Integer fid, Integer uid);

	/**
	 * 取消收藏
	 * @param vid 视频ID
	 * @param fid 收藏夹ID
	 */
	void cancelFavorite(Integer vid, Integer fid);

	/**
	 * 根据是否创建者获取全部可见的收藏夹列表
	 * @param uid   用户ID
	 * @param isOwner  是否收藏夹拥有者
	 * @return  收藏夹列表
	 */
	List<Favorite> getFavorites(Integer uid, boolean isOwner);

}
